home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1999 / MacHack 1999.toast / The Hacks / DesktopDoubler / NubApp / Menu.h < prev    next >
Text File  |  1999-06-23  |  3KB  |  120 lines

  1. #ifndef _MENU_
  2. #define _MENU_
  3.  
  4. #include <Menus.h>
  5. #include "LList.h"
  6. #include "Window.h"
  7.  
  8.  
  9. enum
  10. {
  11.     kDisabled        = (1L << 0)
  12. };
  13.  
  14.  
  15. typedef class Menu
  16. {
  17.     public:
  18.         MenuHandle    fMenu;
  19.         UInt32        fFlags;
  20.  
  21.         virtual void DoUpdate(void) = 0;
  22.         virtual void DoSelect(UInt32 item) = 0;
  23.         virtual Boolean DoSetDisableState(Boolean isBeingDisabled) = 0;
  24.         virtual void DoWindowNotice(Window *window,Boolean isBeingAdded) = 0;
  25.         virtual void DoWindowActivation(Window *window,Boolean isBeingActivated) = 0;
  26. } Menu;
  27.  
  28.  
  29. typedef class MenuManager
  30. {
  31.     public:
  32.         virtual void DoAddMenu(Menu *menu) = 0;
  33.         virtual void DoMenuUpdates(void) = 0;
  34.         virtual void DoSelect(UInt32 menu,UInt32 item) = 0;
  35.         virtual void DoWindowNotice(Window *window,Boolean isBeingAdded) = 0;
  36.         virtual void DoWindowActivation(Window *window,Boolean isBeingActivated) = 0;
  37.         virtual Menu *DoGetMenu(UInt32 menuID) = 0;
  38. } MenuManager;
  39.  
  40.  
  41. typedef struct BaseMenuObject
  42. {
  43.     BaseMenuObject    *next;
  44.     UInt32            fMenuID;
  45.     Menu            *fMenuObject;
  46. } BaseMenuObject;
  47.  
  48.  
  49. typedef class BaseMenuManager : public MenuManager
  50. {
  51.     public:
  52.         LList<BaseMenuObject>        fMenuList;
  53.         
  54.         virtual void DoAddMenu(Menu *menu);
  55.         virtual void DoMenuUpdates(void);
  56.         virtual void DoSelect(UInt32 menu,UInt32 item);
  57.         virtual void DoWindowNotice(Window *window,Boolean isBeingAdded);
  58.         virtual void DoWindowActivation(Window *window,Boolean isBeingActivated);
  59.         virtual Menu *DoGetMenu(UInt32 menuID);
  60.         
  61.         virtual void HandleAddMenu(Menu *menu);
  62.         virtual void HandleMenuUpdate(Menu *menu);
  63.         virtual void HandleSelect(Menu *menu,UInt32 item);
  64.         virtual void HandleWindowNotice(Menu *menu,Window *window,Boolean isBeingAdded);
  65.         virtual void HandleWindowActivation(Menu *menu,Window *window,Boolean isBeingActivated);
  66.         virtual Menu *HandleGetMenu(UInt32 menuID);
  67. } BaseMenuManager;
  68.  
  69.  
  70. typedef class BaseMenu : public Menu
  71. {
  72.     public:
  73.         BaseMenu(UInt32 menuID);
  74.         
  75.         virtual void DoUpdate(void);
  76.         virtual void DoSelect(UInt32 item);
  77.         virtual Boolean DoSetDisableState(Boolean isBeingDisabled);
  78.         virtual void DoWindowNotice(Window *window,Boolean isBeingAdded);
  79.         virtual void DoWindowActivation(Window *window,Boolean isBeingActivated);
  80.         
  81.         virtual void HandleUpdate(void);
  82.         virtual void HandleSelect(UInt32 item);
  83.         virtual void HandleSetDisableState(Boolean isBeingDisabled);
  84.         virtual void HandleWindowNotice(Window *window,Boolean isBeingAdded);
  85.         virtual void HandleWindowActivation(Window *window,Boolean isBeingActivated);
  86. } BaseMenu;
  87.  
  88.  
  89. typedef class AppleMenu : public BaseMenu
  90. {
  91.     public:
  92.         AppleMenu(void);
  93.  
  94.         virtual void HandleSelect(UInt32 item);
  95.         virtual void HandleSetDisableState(Boolean isBeingDisabled);
  96.  
  97.         void ShowAboutBox(void);
  98. } AppleMenu;
  99.  
  100.  
  101. typedef class FileMenu : public BaseMenu
  102. {
  103.     public:
  104.         FileMenu(void);
  105.         
  106.         virtual void HandleSelect(UInt32 item);
  107. } FileMenu;
  108.  
  109.  
  110. typedef class EditMenu : public BaseMenu
  111. {
  112.     public:
  113.         EditMenu(void);
  114.         
  115.         virtual void HandleSelect(UInt32 item);
  116. } EditMenu;
  117.  
  118.  
  119. #endif /* _MENU_ */
  120.